3. C调试工具
在本节中,我们将介绍两种调试工具:GNU 调试器 (GDB),它对于检查程序的运行时状态很有用,以及 Valgrind(发音为Val-grinned
),一种流行的代码分析套件。具体来说,我们介绍 Valgrind 的 Memcheck 工具,该工具可以分析程序的内存访问,以检测无效的内存使用、未初始化的内存使用和内存泄漏。
GDB 部分包括两个示例 GDB 会话,说明用于查找程序中的错误的常用 GDB 命令。我们还讨论了一些高级 GDB 功能,包括将 GDB 附加到正在运行的进程、GDB 和 Makefile、GDB 中的信号控制、汇编代码级别的调试以及调试多线程 Pthreads 程序。
Valgrind 部分讨论了内存访问错误以及它们为何如此难以检测。它还包括在存在一些严重内存访问错误的程序上运行 Memcheck 的示例。 Valgrind 套件包括其他程序分析和调试工具,我们将在后面的章节中介绍。例如,我们在第 11 章 中介绍了缓存分析工具 Cachegrind,以及第 12 章 中的函数调用分析工具Callgrind。